﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using negocios;
using objetos;
using publico;

namespace softsales.cadastro
{
    public partial class frmUsuario : softsales.template.frmBase
    {

        BLL_TB_USUARIO b_tb_usuario = new BLL_TB_USUARIO();
        OBJ_TB_USUARIO o_tb_usuario = new OBJ_TB_USUARIO();

        BLL_TB_USUARIO_PERFIL b_tb_usuario_perfil = new BLL_TB_USUARIO_PERFIL();
        OBJ_TB_USUARIO_PERFIL o_tb_usuario_perfil = new OBJ_TB_USUARIO_PERFIL();

        

        public frmUsuario()
        {
            InitializeComponent();
        }

        private void frmUsuario_Load(object sender, EventArgs e)
        {
            grdUsuario.Focus();
            grdUsuario.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

         //   b_tb_usuario_perfil.PreencheControleWindows(id_perfilComboBox, true);
            CarregaGrid();
        }

     

        public override void btnExcluir_Click(object sender, EventArgs e)
        {
            base.btnExcluir_Click(sender, e);
        }

        public override void btnEditar_Click(object sender, EventArgs e)
        {

            string id = string.Empty;

            foreach (DataGridViewRow item in grdUsuario.Rows)
            {
                if (item.Selected)
                {
                    id = item.Cells["id"].Value.ToString();
                }

            }

            foreach (OBJ_TB_USUARIO o_tb_usuario in b_tb_usuario.SelecionarLista(string.Format("tb_usuario.id = {0}", id), ""))
            {
                idTextBox.Text = o_tb_usuario.id.ToString();
                loginTextBox.Text= o_tb_usuario.login.ToString();
                senhaTextBox.Text = o_tb_usuario.senha.ToString();
                emailTextBox.Text = o_tb_usuario.email.ToString();
                dt_cadastroDateTimePicker.Text = o_tb_usuario.dt_cadastro.ToString();
                dt_expira_senhaDateTimePicker.Text = o_tb_usuario.dt_expira_senha.ToString();
                                
            }

            base.btnEditar_Click(sender, e);
            tabContainer.SelectedTab = tabFormulario;


        }

        public override void btnNovo_Click(object sender, EventArgs e)
        {
            base.btnNovo_Click(sender, e);
            tabContainer.SelectedTab = tabFormulario;
            idTextBox.Enabled = false;
            LimpaControles(this);


        }

        public override void btnCancelar_Click(object sender, EventArgs e)
        {

            base.btnCancelar_Click(sender, e);

            tabContainer.SelectedTab = tabLista;
        }

        public override void LimpaControles(Control ctl)
        {
            base.LimpaControles(ctl);
        }

        public override void btnLocalizar_Click(object sender, EventArgs e)
        {
            softsales.template.frmLocalizar fLocalizar = new softsales.template.frmLocalizar();
            DataTable dt = b_tb_usuario.CriarDataTable();
            if (fLocalizar.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                List<string> where = new List<string>();

                if (fLocalizar.id != string.Empty)
                    where.Add(string.Format(" id = {0}", fLocalizar.id));
                if (fLocalizar.descricao != string.Empty)
                    where.Add(string.Format(" nome like '%{0}%'", fLocalizar.descricao.ToString()));


                List<OBJ_TB_USUARIO> lista_usuario = b_tb_usuario.SelecionarLista(string.Join("and", where.ToArray()).ToString(), "");


                if (lista_usuario.Count > 0)
                {
                    for (int i = 0; i <= lista_usuario.Count  - 1; i++)
                    {
                        b_tb_usuario.PreencheDataTable(dt, lista_usuario[i]);
                    }


                    grdUsuario.DataSource = dt;
                    grdUsuario.Refresh();
                }
                else
                {
                    MessageBox.Show("Nenhum registro encontrado.");
                }



            }
            //base.btnLocalizar_Click(sender, e);

        }

        public override void btnSalvar_Click(object sender, EventArgs e)
        {
            base.btnSalvar_Click(sender, e);
        }

        public override bool Editar()
        {
            return base.Editar();
        }

        public override bool Localizar()
        {
            return base.Localizar();
        }

        public override bool Salvar()
        {
            try
            {
                o_tb_usuario.dt_atualizacao = DateTime.Now;
                o_tb_usuario.dt_cadastro = Convert.ToDateTime(dt_cadastroDateTimePicker.Text);
                o_tb_usuario.dt_expira_senha = Convert.ToDateTime(dt_expira_senhaDateTimePicker.Text);
                o_tb_usuario.email = emailTextBox.Text;
                o_tb_usuario.id_perfil = ((OBJ_TB_USUARIO_PERFIL)id_perfilComboBox.SelectedItem).id;
                o_tb_usuario.login = loginTextBox.Text;
                o_tb_usuario.senha = senhaTextBox.Text;

                if (idTextBox.Text != string.Empty)
                {
                   
                    o_tb_usuario.id = Convert.ToInt32(idTextBox.Text);
                    b_tb_usuario.Alterar(o_tb_usuario);
                }
                else
                {
                    o_tb_usuario.senha = senhaTextBox.Text;
                    b_tb_usuario.Incluir(o_tb_usuario);
                }
                tabContainer.SelectedTab = tabLista;
                CarregaGrid();
                return true;
            }
            catch (Exception)
            {

                return false;
            }

        }

        public override bool Excluir()
        {
            try
            {
                o_tb_usuario.id = Convert.ToInt32(idTextBox.Text);
                b_tb_usuario.Excluir(o_tb_usuario);
                tabContainer.SelectedTab = tabLista;
                CarregaGrid();
                return true;
            }
            catch (Exception)
            {

                return false;
            }

        }

        public override void btnFechar_Click(object sender, EventArgs e)
        {
            base.btnFechar_Click(sender, e);
        }

        public override void CarregaGrid()
        {
            DataTable dt = b_tb_usuario.CriarDataTable();
            List<OBJ_TB_USUARIO> lista_usuario = b_tb_usuario.SelecionarLista();

            if (lista_usuario.Count > 0)
            {
                for (int i = 0; i <= lista_usuario.Count - 1; i++)
                {
                    b_tb_usuario.PreencheDataTable(dt, lista_usuario[i]);
                }


                grdUsuario.DataSource = dt;
                grdUsuario.Refresh();
            }

        }
     
        
    }
}
